/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.dizucar.accion;

import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import sv.com.dizucar.controlador.DetalleVentaControlador;
import sv.com.dizucar.controlador.VentaControlador;
import sv.com.dizucar.modelo.Cliente;
import sv.com.dizucar.modelo.DetalleVenta;
import sv.com.dizucar.modelo.Venta;

/**
 *
 * @author stefanny
 */
@ManagedBean
@ViewScoped
public class VentaAccion extends AccionAbstracto{

    private Venta entidad = new Venta();
    private VentaControlador controlador;
    private boolean nuevoRegistro;
    private boolean nuevoRegistroDetalle;
    private boolean mostrarDetalle;
    private DetalleVenta entidadDetalle=new DetalleVenta();
    
    
    public void crear(){
        try{
            getControlador().crear(this.entidad);
            lanzarMensajeInformacion(this.entidad.getClass().getName() + " creado exitosamente");
            setNuevoRegistro(false);
        }catch(Exception e){
            e.printStackTrace();
            lanzarMensajeError("Error al crear "+ this.entidad.getClass().getName());
        }
    }
    
    public void modificar(){
        try{
            agregarDetalleModificado();
            getControlador().modificar(this.entidad);
            lanzarMensajeInformacion(this.entidad.getClass().getName() + " guardado exitosamente");
            if(isNuevoRegistro()){
                setMostrarDetalle(true);
                setNuevoRegistro(false);
            }
        }catch(Exception e){
            e.printStackTrace();
            lanzarMensajeError("Error al guardar "+ this.entidad.getClass().getName());
        }
    }
    
    public void eliminarDetalle(){
           if(getEntidad().getDetalleVentaList().contains(this.entidadDetalle)){
                    getEntidad().getDetalleVentaList().remove(this.entidadDetalle);
           }
    }
    
    private void agregarDetalleModificado(){
        if(this.entidadDetalle.getIddetalleventa()!=null){
                /*if(getEntidad().getDetalleVentaList().contains(this.entidadDetalle)){
                    getEntidad().getDetalleVentaList().remove(this.entidadDetalle);
                    getEntidad().getDetalleVentaList().add(this.entidadDetalle);
                }else{
                    getEntidad().getDetalleVentaList().add(this.entidadDetalle);
                }*/
                getEntidad().getDetalleVentaList().add(this.entidadDetalle);
            }
    }
    
    public void eliminar(){
        try{
            getControlador().eliminar(this.entidad);
            lanzarMensajeInformacion(this.entidad.getClass().getName() + " eliminado exitosamente");
        }catch(Exception e){
            e.printStackTrace();
            lanzarMensajeError("Error al eliminar "+ this.entidad.getClass().getName());
        }
    }
    
    public List<Venta> obtenerTodos(){
        return getControlador().listaEntidades();
    }
    
    public void generarNuevaEntidad(){
        setEntidad(new Venta());
        getEntidad().setDetalleVentaList(new ArrayList<DetalleVenta>());
        setNuevoRegistro(true);
        setMostrarDetalle(false);
        System.out.println("Nuevo registro : "+ isNuevoRegistro());
    }
    
    public void seleccionEntidadListaDatos(){
        setNuevoRegistro(false);
        setMostrarDetalle(true);
        System.out.println("Nuevo registro : "+ isNuevoRegistro());
    }
    
    
    public void generarNuevaEntidadDetalle(){
        DetalleVentaControlador controlador = new DetalleVentaControlador();
        setEntidadDetalle(new DetalleVenta(controlador.obtenerSiguienteID()));
        setNuevoRegistroDetalle(true);
        System.out.println("Nuevo registro : "+ isNuevoRegistroDetalle());
    }
    
    public void seleccionEntidadDetalleListaDatos(){
        setNuevoRegistroDetalle(false);
        System.out.println("Nuevo registro : "+ isNuevoRegistroDetalle());
    }
   

    public VentaControlador getControlador() {
        if(controlador==null)
            controlador = new VentaControlador();
        return controlador;
    }

    public Venta getEntidad() {
        return entidad;
    }

    public void setEntidad(Venta entidad) {
        this.entidad = entidad;
    }

    public boolean isNuevoRegistro() {
        return nuevoRegistro;
    }

    public void setNuevoRegistro(boolean nuevoRegistro) {
        this.nuevoRegistro = nuevoRegistro;
    }

    public boolean isMostrarDetalle() {
        return mostrarDetalle;
    }

    public void setMostrarDetalle(boolean mostrarDetalle) {
        this.mostrarDetalle = mostrarDetalle;
    }

    public DetalleVenta getEntidadDetalle() {
        return entidadDetalle;
    }

    public void setEntidadDetalle(DetalleVenta entidadDetalle) {
        this.entidadDetalle = entidadDetalle;
    }

    public boolean isNuevoRegistroDetalle() {
        return nuevoRegistroDetalle;
    }

    public void setNuevoRegistroDetalle(boolean nuevoRegistroDetalle) {
        this.nuevoRegistroDetalle = nuevoRegistroDetalle;
    }
    
    


}
